<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * 分类管理
 */
class Sort extends Auth_Controller{

    public function __construct() {
        parent::__construct();
        $this->load->model('sort_mdl');

		//验证
		$post = $this->input->post(NULL,TRUE);

		if(empty($post)){
			return true;
		}

		$vali = $this->validation($post);
		if($vali !== true){
			echo $vali;
			exit;
		}
    }

	/**
	  * 分类提交验证
	  */
	public function validation($data = array()){
	 	if(empty($data)){
	 		return false;
	 	}
		if(isset($data['name'])){
			if(empty($data['name']))return '分类名称不能为空';
			if(mb_strlen($data['name']) > 50) return '分类名称不能超过50个字符';
		}
		if(isset($data['pid'])){
			if(!is_numeric($data['pid'])) return '服务器内部错误！';
		}
		if(isset($data['top'])){
			if(!is_numeric($data['top'])) return '服务器内部错误！';
		}
		if(isset($data['depict'])){
			if(mb_strlen($data['depict']) > 20) return '分类名称不能超过20个字符';
		}
		if(isset($data['sort'])){
			if(!is_numeric($data['sort'])) return '分类排序必须为数字， 0 为默认排序';
		}
		return true;
	 }

    /**
     * 分类首页
     */
    public function index(){
        $res = $this->sort_mdl->getf(0);
        $data = array(
            'list' => $res
        );
        $this->_view('admin/sort_index',$data);
    }

    /**
     * ajax查询下级分类
     */
    public function getsort(){
        $id = $this->input->post('sid',TRUE);
        if(is_numeric($id) && $this->input->is_ajax_request()){
            $res = $this->sort_mdl->getf($id);
            echo json_encode($res);
        }else{
            redirect(site_url('admini/sort'));
        }
    }

	/**
	 * 分类添加
	 */
	 public function create(){
	 	$post = $this->input->post(NULL,TRUE);

		if(!empty($post)){
			if(empty($post['pid']) && !is_numeric($post['pid'])){
				echo '内部错误！';
				return false;
			}

			//判断层级
			$list = $this->sort_mdl->get_fsort($post['pid']);
			$post['top'] = count($list);

			$v = $this->sort_mdl->create($post);

			//添加日志

			$this->logs->add($v?1:2,'新增分类"'.$post['name'].'"');

			if($v === TRUE){
				echo 1;
			}else{
				echo '服务器超时，添加失败！';
			}
		}else{
			$res = $this->sort_mdl->getf(0);
			$this->_view('admin/sort_create',array('list'=>$res));
		}
	 }

	 /**
	  * 用户信息修改
	  */
	 public function update($id = 0){
	 	if(!is_numeric($id) || !$id){
	 		redirect('admini/sort/index');
	 	}

		$res = $this->sort_mdl->get_one(array('id'=>$id));

		if(empty($res)){
			redirect('admini/sort/index');
		}

		//查询父级分类
		$list = $this->sort_mdl->get_fsort($res['pid']);

		if(empty($list)){
			$list = array(
				'0' => array(
					'id' => 0,
					'pid' => 0,
					'content' => $this->sort_mdl->getf(0)
				)
				//'content' => $this->sort_mdl->getf(0)
			);
		}
		//print_r($list);exit;
		$data = array(
			'res' => $res,
			'list' => array_reverse($list)
		);

		$this->_view('admin/sort_update',$data);
	 }

	 /**
	  * 设置分类
	  */
	 public function set_sort(){
	 	$post = $this->input->post(NULL,TRUE);
		if(empty($post) || !$this->input->is_ajax_request()){
			show_404('页面不存在！');
			exit;
		}

		if(empty($post['sid'])){
			echo '内部错误！';
			exit;
		}

		$map = array('id'=>$post['sid']);

		unset($post['sid']);

		//判断分类层级
		if(!empty($post['pid'])){
		$list = $this->sort_mdl->get_fsort($post['pid']);
		$post['top'] = count($list);
		}
		
		$v = $this->sort_mdl->update($post,$map);

		//写入日志
		$txt = '编号为'.$map['id'];
		foreach($post as $k => $v){
			$txt .= ' '.$k.'='.$v;
		}
		$this->logs->add($v?1:2,'修改分类"'.$txt.'"');

		echo $v === false ? '数据库连接失败！' : 1 ;
	 }

	 /**
	  * 分类删除
	  */
	 public function del_sort(){
	 	$id = $this->input->post('sid',TRUE);

		if(empty($id) || !$this->input->is_ajax_request()){
			show_404('页面不存在！');
			exit;
		}

		// 判断该分类 下 是否还有还有内容（暂时不做）

		$v = $this->sort_mdl->del_sort($id);

		echo $v === false ? '数据库连接失败！' : 1;
	 }
}